home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / 3dvect39 / vars1.inc < prev    next >
Text File  |  1994-10-30  |  17KB  |  401 lines

  1. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2. ;
  3. ; Filename     : vars1.inc
  4. ; Included from: 3D1.ASM
  5. ; Description  : Defined Variables for 3D1.ASM
  6. ;
  7. ; Written by: John McCarthy
  8. ;             1316 Redwood Lane
  9. ;             Pickering, Ontario.
  10. ;             Canada, Earth, Milky Way (for those out-of-towners)
  11. ;             L1X 1C5
  12. ;
  13. ; Internet/Usenet:  BRIAN.MCCARTHY@CANREM.COM
  14. ;         Fidonet:  Brian McCarthy 1:229/15
  15. ;   RIME/Relaynet: ->CRS
  16. ;
  17. ; Home phone, (905) 831-1944, don't call at 2 am eh!
  18. ;
  19. ; John Mccarthy would really love to work for a company programming Robots
  20. ; or doing some high intensive CPU work.  Hint. Hint.
  21. ;
  22. ; Send me your protected mode source code!
  23. ; Send me your Objects!
  24. ; But most of all, Send me a postcard!!!!
  25. ;
  26. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  27.  
  28.                    align 4
  29.  
  30. ; table of current limitations/restraints - to be used as reference by  user
  31. ; at run-time to determine if object code has been assembled with ample room
  32. ; for data/variables/point/surfaces etc...
  33.  
  34. _asm_version       dw 38h
  35. _asm_maxpoints     dw maxpoints
  36. _asm_maxsurfaces   dw maxsurfaces
  37. _asm_maxpolys      dw maxpolys
  38. _asm_maxobjects    dw maxobjects
  39. _asm_number_spaces dw number_of_spaces
  40. _asm_xsize         dw xmax-xmin
  41. _asm_ysize         dw ymax-ymin
  42. _asm_usez          dw usez
  43. _asm_cameraobject  dw cameraobject
  44. _asm_xmode         dw xmode
  45. _asm_ratiox        dw ratiox
  46. _asm_ratioy        dw ratioy
  47. _asm_xactual       dw xactual
  48. _asm_yactual       dw yactual
  49. _asm_pages         dw pages
  50. _asm_shapes        dw numberofshapes
  51. _asm_bitmaps       dw numberofbitmaps
  52. _asm_xpals         dw numberofpals
  53. _asm_div256        dw div_256
  54.  
  55.                    align 4
  56.  
  57. _objbase           dd numberofshapes dup (0) ; memory locations of shapes (offsets)
  58. _bitbase           dd numberofbitmaps dup (0) ; memory locations of _bitmaps
  59. _bitx              dd numberofbitmaps dup (0) ; x base size of _bitmaps (for 3d)
  60. _bity              dd numberofbitmaps dup (0) ; y base size of _bitmaps
  61. _xreftable         dd numberofpals dup (o _nullpalette) ; offsets to palette cross referance tables
  62. _stonetbl          dd numberofstones dup (0) ; offsets to stones textures
  63. _stoneadd          db numberofstones dup (0) ; colour addition value for stone textures (0,16,32,...)
  64.  
  65. _x1                dw ?                     ; points for line draw
  66. _y1                dw ?
  67. _x2                dw ?
  68. _y2                dw ?
  69. rise               dw ?                     ; counter for draw loop
  70. xp                 dd maxpoints dup (?)     ; points breakdown, after _rotate_pointd, 2d,
  71. yp                 dd maxpoints dup (?)     ; x,y points after 3d, are actual location.
  72. zp                 dd maxpoints dup (?)     ; z useless, only good during sort of sides
  73. sides              dw maxsurfaces*maxpolys dup (?) ; visible sides only here (clockwize)
  74. order              dd maxsurfaces dup (?)   ; what order to draw surfaces in.
  75. zeds               dd maxsurfaces dup (?)   ; z values of first point in side, for sort
  76. surfcolors         dw maxsurfaces dup (?)   ; colours for those sides, high and low
  77. colors12           dd 0                     ; colours for sides 1&2
  78. textures           dw maxsurfaces dup (?)   ; commands/textures for sides
  79. texture12          dd 0                     ; textures for sides 1&2
  80. command            dd 0                     ; current command in load_surfaces loop
  81. _showing           dd 0                     ; how many visible sides (total)
  82. pointindex         dd 0                     ; indexer to points, v_xs[],v_ys[],v_zs[]
  83.  
  84.  
  85. numsides           dd ?                     ; number of sides total, gets trashed
  86. numpoints          dd ?                     ; number of points, gets trashed
  87. whichside          dd ?                     ; which side am i doing now
  88.                    dw 0                     ; reserved - leave blank
  89.                    tbsize = ymax-ymin
  90.                    if tbsize lt xmax-xmin
  91.                    tbsize = xmax-xmin
  92.                    endif
  93. _poly_firstbyte    dw tbsize dup(1000)      ; table of start and end x points
  94.                    dw 1000                  ; end flag, permanent
  95.                    dw 0                     ; reserved - leave blank
  96. _poly_lastbyte     dw tbsize dup(-1000)
  97. _poly_oney         dd 1000                  ; y start for one polygon draw
  98. leftmost           dw 1000                  ; only used for _fakeline_vert routine
  99. _colq              db ?                     ; colour of this side
  100. lamflag            db ?                     ; is lambert matrix set up for this object?
  101.                    align 4
  102. currobj            dd ?                     ; current object number (for shading)
  103. xad                dd ?                     ; 3d offset of object
  104. yad                dd ?
  105. zad                dd ?
  106. vxcos              dd ?
  107. vxsin              dd ?
  108. vycos              dd ?
  109. vysin              dd ?
  110. vzcos              dd ?
  111. vzsin              dd ?
  112. palxrefx           dd ?                     ; temp xreferance holder
  113. steel              db ?                     ; steel flag, -1 = don't use
  114. steelc             db ?                     ; base colour for steel, taken from _colq
  115. polytype           dd ?                     ; offset for polytype (_fakeline_horz)
  116. minzc              dd ?                     ; minz (for each object)
  117. btolr              dd ?                     ; tolerance (for each object)
  118. fex                dw ?
  119. lastshade          db ?                     ; shade intensity from last calculation
  120.  
  121. ; virtual locations/objects
  122.  
  123.                    align 4
  124. v_whatshape        dw maxobjects+1 dup (0)  ; shapes of objects or bitmaps (0,1,2...)
  125. v_bitobjx          dw maxobjects+1 dup (0)  ; bitmap additional scaling x
  126. v_bitobjy          dw maxobjects+1 dup (0)  ; bitmap additional scaling y
  127. v_xs               dd maxobjects+1 dup (0)  ; locations of objects
  128. v_ys               dd maxobjects+1 dup (0)
  129. v_zs               dd maxobjects+1 dup (0)
  130. v_vxs              dw maxobjects+1 dup (0)  ; angles of objects
  131. v_vys              dw maxobjects+1 dup (0)
  132. v_vzs              dw maxobjects+1 dup (0)
  133. v_palxref          db maxobjects+1 dup (0)  ; palette cross reference for each object
  134. v_userotate        db maxobjects+1 dup (0)  ; rotation type,0 = full,1 = camera
  135. v_onoff            db maxobjects+1 dup (0)  ; is object on/off
  136.                    dd 0                     ; buffer, leave this here dragon breath!
  137.                    align 4
  138.  
  139. ; variables for multiple object routine, you modify these!
  140.  
  141. _whatshape         dw maxobjects+1 dup (0)  ; shapes of objects or bitmaps (0,1,2...)
  142. _bitobjx           dw maxobjects+1 dup (0)  ; bitmap additional scaling x
  143. _bitobjy           dw maxobjects+1 dup (0)  ; bitmap additional scaling y
  144. _xs                dd maxobjects+1 dup (0)  ; locations of objects
  145. _ys                dd maxobjects+1 dup (0)
  146. _zs                dd maxobjects+1 dup (0)
  147. _vxs               dw maxobjects+1 dup (0)  ; angles of objects
  148. _vys               dw maxobjects+1 dup (0)
  149. _vzs               dw maxobjects+1 dup (0)
  150. _palxref           db maxobjects+1 dup (0)  ; palette cross reference for each object
  151. _userotate         db maxobjects+1 dup (0)  ; rotation type,0 = full,1 = camera
  152. _onoff             db maxobjects+1 dup (0)  ; is object on/off
  153.                    align 4
  154.  
  155. _xadds             dd maxobjects+1 dup (0)  ; linear velocities of objects
  156. _yadds             dd maxobjects+1 dup (0)
  157. _zadds             dd maxobjects+1 dup (0)
  158. _vxadds            dw maxobjects+1 dup (0)  ; anglular velocities
  159. _vyadds            dw maxobjects+1 dup (0)
  160. _vzadds            dw maxobjects+1 dup (0)
  161. _lcount            dw maxobjects+1 dup (0)  ; linear counter
  162. _acountx           dw maxobjects+1 dup (0)  ; angular counters
  163. _acounty           dw maxobjects+1 dup (0)
  164. _acountz           dw maxobjects+1 dup (0)
  165.  
  166. ; temp storage for object routine
  167.  
  168.                    align 4
  169. finalzed           dd maxobjects dup (?)    ; final z for sort routine
  170. makeorder          dd maxobjects dup (?)    ; order for objects, bubble sorted
  171. zedthis            dd ?                     ; final z temp
  172.  
  173. ; flags to disable/enable routines: disable = -1, enable >=0
  174.  
  175. _cam_follow        dd no                    ; what object are we following, -1 = none
  176. _cam_wherelook     dd no                    ; what object do we force camera to look at
  177.  
  178. _cam_oldspeed      dd ?                     ; how fast to move, temp counter
  179.  
  180. ; camera variables = was last object in object list, now is zero'th
  181.  
  182. eyex               equ d [v_xs+cameraobject*4] ; camera location (actual, dont modify)
  183. eyey               equ d [v_ys+cameraobject*4]
  184. eyez               equ d [v_zs+cameraobject*4]
  185. eyeax              equ w [v_vxs+cameraobject*2] ; angles for camera
  186. eyeay              equ w [v_vys+cameraobject*2]
  187. eyeaz              equ w [v_vzs+cameraobject*2]
  188.  
  189. _eyex              equ d [_xs+cameraobject*4] ; camera location (virtual, modify these!)
  190. _eyey              equ d [_ys+cameraobject*4]
  191. _eyez              equ d [_zs+cameraobject*4]
  192. _eyeax             equ w [_vxs+cameraobject*2] ; angles for camera
  193. _eyeay             equ w [_vys+cameraobject*2]
  194. _eyeaz             equ w [_vzs+cameraobject*2]
  195.  
  196. _eyexadds          equ d [_xadds+cameraobject*4] ; eye location velocity
  197. _eyeyadds          equ d [_yadds+cameraobject*4]
  198. _eyezadds          equ d [_zadds+cameraobject*4]
  199. _eyevxadds         equ w [_vxadds+cameraobject*2] ; eye angular velocities
  200. _eyevyadds         equ w [_vyadds+cameraobject*2]
  201. _eyevzadds         equ w [_vzadds+cameraobject*2]
  202. _eyelcount         equ w [_lcount+cameraobject*2] ; eye linear count (how many times to move)
  203. _eyeacountx        equ w [_acountx+cameraobject*2] ; eye angular counts
  204. _eyeacounty        equ w [_acounty+cameraobject*2]
  205. _eyeacountz        equ w [_acountz+cameraobject*2]
  206.  
  207.                    align 4
  208.  
  209. _ecosx             dd ?                     ; multipliers of eyeax and eyeaz
  210. _esinx             dd ?                     ; reset at begining of each new frame
  211. _ecosy             dd ?
  212. _esiny             dd ?
  213. _ecosz             dd ?
  214. _esinz             dd ?
  215.  
  216. vcosx              dd ?                     ; temp storage for object matrix calculation
  217. vsinx              dd ?                     ; can be used if needed during draw
  218. vcosy              dd ?
  219. vsiny              dd ?
  220. vcosz              dd ?
  221. vsinz              dd ?
  222.  
  223. _vmatrix           dd 9 dup (?)             ; 3x3 rotation matrix for object (includes eye)
  224. _tmatrix           dd 9 dup (?)             ; 3x3 temp rotation matrix for hierarchys
  225. _ematrix           dd 9 dup (?)             ; 3x3 rotation matrix for eye (32 bit)
  226. _lmatrix           dd 3 dup (?)             ; 1x3 z resultant matrix for _lambert shading
  227.  
  228. _y_angle_of_sun    dd 1500h                 ; where is the sun? for shading
  229.  
  230. ; clipping variables in memory locations, pre-calculated!
  231. ; xactual and yactual basically don't change but clipping can to allow
  232. ; windows (rear view mirror, view airplanes menu, auxilary views, rear gunner)
  233. ;
  234. ; when flipping between windows, also flip makeorder[], _cam_follow, _cam_wherelook
  235. ; _cam_oldspeed, _clr_lxupdate, _clr_lyupdate, camera variables/angles/speeds (obviously).
  236.  
  237. _cliplt            dw _xcenter+xmin         ; _xcenter+xmin
  238. _cliprt            dw _xcenter+xmax-1       ; _xcenter+xmax-1
  239. _cliptp            dw _ycenter+ymin         ; _ycenter+ymin
  240. _clipbt            dw _ycenter+ymax-1       ; _ycenter+ymax-1
  241.  
  242. _xcent             dw _xcenter
  243. _ycent             dw _ycenter
  244. _ycents1           dw _ycenter-1
  245. _ycentp1           dw _ycenter+1
  246.  
  247. xmaxxcent          dw xmax+_xcenter
  248.  
  249. ymaxycent         dw ymax+_ycenter
  250.  
  251. _xmins             dw xmin
  252. _xmins1            dw xmin-1
  253. _xmaxs             dw xmax
  254. _xmaxs1            dw xmax-1
  255.  
  256. _ymins             dw ymin
  257. _ymins1            dw ymin-1
  258. _ymaxs             dw ymax
  259. _ymaxs1            dw ymax-1
  260.  
  261. xmit               dd xmin-tolerance        ; tolerance is max object size/ratio
  262. xmat               dd xmax+tolerance
  263. ymit               dd ymin-tolerance
  264. ymat               dd ymax+tolerance
  265.  
  266. ; routines for screen stretching
  267.  
  268. _make3d            dd offset _user3d        ; calculate 3d ?actual*?/z (both x and y)
  269. _make3dx           dd offset _user3dx       ; xactual*x/z
  270. _make3dy           dd offset _user3dy       ; yactual*y/z
  271.  
  272. ; variables for icon scale routine
  273.  
  274. _bitmap            dd ?
  275. _scale_destwidth   dw ?
  276. _scale_destheight  dw ?
  277. _scale_destx       dw ?
  278. _scale_desty       dw ?
  279.  
  280. sourcewidth        dw ?                     ; workspace for icon scale routine
  281. sourceheight       dw ?
  282. decisionx          dw ?
  283. decisiony          dw ?
  284. clippedwidth       dw ?
  285. clippedheight      dw ?
  286.  
  287.                    public _objbase
  288.                    public _bitbase
  289.                    public _bitx
  290.                    public _bity
  291.                    public _xreftable
  292.                    public _stonetbl
  293.                    public _stoneadd
  294.  
  295.                    public _xs
  296.                    public _ys
  297.                    public _zs
  298.                    public _xadds
  299.                    public _yadds
  300.                    public _zadds
  301.                    public _vxs
  302.                    public _vys
  303.                    public _vzs
  304.                    public _vxadds
  305.                    public _vyadds
  306.                    public _vzadds
  307.                    public _lcount
  308.                    public _acountx
  309.                    public _acounty
  310.                    public _acountz
  311.                    public _whatshape
  312.                    public _palxref
  313.                    public _userotate
  314.                    public _bitobjx
  315.                    public _bitobjy
  316.  
  317.                    public _eyex
  318.                    public _eyey
  319.                    public _eyez
  320.                    public _eyeax
  321.                    public _eyeay
  322.                    public _eyeaz
  323.                    public _eyexadds
  324.                    public _eyeyadds
  325.                    public _eyezadds
  326.                    public _eyevxadds
  327.                    public _eyevyadds
  328.                    public _eyevzadds
  329.                    public _eyelcount
  330.                    public _eyeacountx
  331.                    public _eyeacounty
  332.                    public _eyeacountz
  333.  
  334.                    public _onoff
  335.  
  336.                    public _vmatrix
  337.                    public _tmatrix
  338.                    public _ematrix
  339.                    public _lmatrix
  340.                    public _y_angle_of_sun
  341.                    public _ecosx
  342.                    public _esinx
  343.                    public _ecosy
  344.                    public _esiny
  345.                    public _ecosz
  346.                    public _esinz
  347.  
  348.                    public _bitmap
  349.                    public _scale_destwidth
  350.                    public _scale_destheight
  351.                    public _scale_destx
  352.                    public _scale_desty
  353.  
  354.                    public _x1
  355.                    public _y1
  356.                    public _x2
  357.                    public _y2
  358.                    public _colq
  359.  
  360.                    public _poly_oney
  361.                    public _poly_firstbyte
  362.                    public _poly_lastbyte
  363.                    public _showing
  364.  
  365.                    public _cliplt
  366.                    public _cliprt
  367.                    public _cliptp
  368.                    public _clipbt
  369.                    public _xcent
  370.                    public _ycent
  371.                    public _xmins
  372.                    public _xmins1
  373.                    public _xmaxs
  374.                    public _xmaxs1
  375.                    public _ymins
  376.                    public _ymins1
  377.                    public _ymaxs
  378.                    public _ymaxs1
  379.  
  380.                    public _make3d
  381.                    public _make3dx
  382.                    public _make3dy
  383.  
  384.                    public _asm_version
  385.                    public _asm_maxpoints
  386.                    public _asm_maxsurfaces
  387.                    public _asm_maxpolys
  388.                    public _asm_maxobjects
  389.                    public _asm_number_spaces
  390.                    public _asm_xsize
  391.                    public _asm_ysize
  392.                    public _asm_usez
  393.                    public _asm_cameraobject
  394.                    public _asm_xmode
  395.                    public _asm_ratiox
  396.                    public _asm_ratioy
  397.                    public _asm_xactual
  398.                    public _asm_yactual
  399.                    public _asm_pages
  400.  
  401.